home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Skunkware 5
/
Skunkware 5.iso
/
man
/
cat.1
/
ppmforge.1
< prev
next >
Wrap
Text File
|
1995-07-25
|
27KB
|
463 lines
ppppppppmmmmffffoooorrrrggggeeee((((1111)))) XXXXEEEENNNNIIIIXXXX SSSSyyyysssstttteeeemmmm VVVV ((((22225555 OOOOccccttttoooobbbbeeeerrrr 1111999999991111)))) ppppppppmmmmffffoooorrrrggggeeee((((1111))))
NNNNAAAAMMMMEEEE
ppmforge - fractal forgeries of clouds, planets, and starry
skies
SSSSYYYYNNNNOOOOPPPPSSSSIIIISSSS
ppppppppmmmmffffoooorrrrggggeeee [----cccclllloooouuuuddddssss] [----nnnniiiigggghhhhtttt] [----ddddiiiimmmmeeeennnnssssiiiioooonnnn _d_i_m_e_n] [----hhhhoooouuuurrrr _h_o_u_r]
[----iiiinnnncccclllliiiinnnnaaaattttiiiioooonnnn||||----ttttiiiilllltttt _a_n_g_l_e] [----mmmmeeeesssshhhh _s_i_z_e] [----ppppoooowwwweeeerrrr
_f_a_c_t_o_r] [----ggggllllaaaacccciiiieeeerrrrssss _l_e_v_e_l] [----iiiicccceeee _l_e_v_e_l] [----ssssaaaattttuuuurrrraaaattttiiiioooonnnn
_s_a_t] [----sssseeeeeeeedddd _s_e_e_d] [----ssssttttaaaarrrrssss _f_r_a_c_t_i_o_n] [----xxxxssssiiiizzzzeeee||||----wwwwiiiiddddtttthhhh
_w_i_d_t_h] [----yyyyssssiiiizzzzeeee||||----hhhheeeeiiiigggghhhhtttt _h_e_i_g_h_t]
DDDDEEEESSSSCCCCRRRRIIIIPPPPTTTTIIIIOOOONNNN
ppppppppmmmmffffoooorrrrggggeeee generates three kinds of ``random fractal for-
geries,'' the term coined by Richard F. Voss of the IBM Tho-
mas J. Watson Research Center for seemingly realistic pic-
tures of natural objects generated by simple algorithms em-
bodying randomness and fractal self-similarity. The tech-
niques used by ppppppppmmmmffffoooorrrrggggeeee are essentially those given by
Voss[1], particularly the technique of spectral synthesis
explained in more detail by Dietmar Saupe[2].
The program generates two varieties of pictures: planets and
clouds, which are just different renderings of data generat-
ed in an identical manner, illustrating the unity of the
fractal structure of these very different objects. A third
type of picture, a starry sky, is synthesised directly from
pseudorandom numbers.
The generation of planets or clouds begins with the prepara-
tion of an array of random data in the frequency domain.
The size of this array, the ``mesh size,'' can be set with
the ----mmmmeeeesssshhhh option; the larger the mesh the more realistic the
pictures but the calculation time and memory requirement in-
creases as the square of the mesh size. The fractal dimen-
sion, which you can specify with the ----ddddiiiimmmmeeeennnnssssiiiioooonnnn option,
determines the roughness of the terrain on the planet or the
scale of detail in the clouds. As the fractal dimension is
increased, more high frequency components are added into the
random mesh.
Once the mesh is generated, an inverse two dimensional
Fourier transform is performed upon it. This converts the
original random frequency domain data into spatial ampli-
tudes. We scale the real components that result from the
Fourier transform into numbers from 0 to 1 associated with
each point on the mesh. You can further modify this number
by applying a ``power law scale'' to it with the ----ppppoooowwwweeeerrrr op-
tion. Unity scale leaves the numbers unmodified; a power
scale of 0.5 takes the square root of the numbers in the
mesh, while a power scale of 3 replaces the numbers in the
mesh with their cubes. Power law scaling is best envisioned
by thinking of the data as representing the elevation of
Page 1 (printed 9/7/93)
ppppppppmmmmffffoooorrrrggggeeee((((1111)))) XXXXEEEENNNNIIIIXXXX SSSSyyyysssstttteeeemmmm VVVV ((((22225555 OOOOccccttttoooobbbbeeeerrrr 1111999999991111)))) ppppppppmmmmffffoooorrrrggggeeee((((1111))))
terrain; powers less than 1 yield landscapes with vertical
scarps that look like glacially-carved valleys; powers
greater than one make fairy-castle spires (which require
large mesh sizes and high resolution for best results).
After these calculations, we have a array of the specified
size containing numbers that range from 0 to 1. The pixmaps
are generated as follows:
CCCClllloooouuuuddddssss A colour map is created that ranges from pure blue
to white by increasing admixture (desaturation) of
blue with white. Numbers less than 0.5 are
coloured blue, numbers between 0.5 and 1.0 are
coloured with corresponding levels of white, with
1.0 being pure white.
PPPPllllaaaannnneeeetttt The mesh is projected onto a sphere. Values less
than 0.5 are treated as water and values between
0.5 and 1.0 as land. The water areas are coloured
based upon the water depth, and land based on its
elevation. The random depth data are used to
create clouds over the oceans. An atmosphere ap-
proximately like the Earth's is simulated; its
light absorption is calculated to create a blue
cast around the limb of the planet. A function
that rises from 0 to 1 based on latitude is modu-
lated by the local elevation to generate polar ice
caps--high altitude terrain carries glaciers
farther from the pole. Based on the position of
the star with respect to the observer, the ap-
parent colour of each pixel of the planet is cal-
culated by ray-tracing from the star to the planet
to the observer and applying a lighting model that
sums ambient light and diffuse reflection (for
most planets ambient light is zero, as their pri-
mary star is the only source of illumination).
Additional random data are used to generate stars
around the planet.
NNNNiiiigggghhhhtttt A sequence of pseudorandom numbers is used to gen-
erate stars with a user specified density.
Cloud pictures always contain 256 or fewer colours and may
be displayed on most colour mapped devices without further
processing. Planet pictures often contain tens of thousands
of colours which must be compressed with ppppppppmmmmqqqquuuuaaaannnntttt or
ppppppppmmmmddddiiiitttthhhheeeerrrr before encoding in a colour mapped format. If the
display resolution is high enough, ppppppppmmmmddddiiiitttthhhheeeerrrr generally pro-
duces better looking planets. ppppppppmmmmqqqquuuuaaaannnntttt tends to create
discrete colour bands, particularly in the oceans, which are
unrealistic and distracting. The number of colours in star-
ry sky pictures generated with the ----nnnniiiigggghhhhtttt option depends on
Page 2 (printed 9/7/93)
ppppppppmmmmffffoooorrrrggggeeee((((1111)))) XXXXEEEENNNNIIIIXXXX SSSSyyyysssstttteeeemmmm VVVV ((((22225555 OOOOccccttttoooobbbbeeeerrrr 1111999999991111)))) ppppppppmmmmffffoooorrrrggggeeee((((1111))))
the value specified for ----ssssaaaattttuuuurrrraaaattttiiiioooonnnn. Small values limit the
colour temperature distribution of the stars and reduce the
number of colours in the image. If the ----ssssaaaattttuuuurrrraaaattttiiiioooonnnn is set
to 0, none of the stars will be coloured and the resulting
image will never contain more than 256 colours. Night sky
pictures with many different star colours often look best
when colour compressed by ppppnnnnmmmmddddeeeepppptttthhhh rather than ppppppppmmmmqqqquuuuaaaannnntttt or
ppppppppmmmmddddiiiitttthhhheeeerrrr. Try _n_e_w_m_a_x_v_a_l settings of 63, 31, or 15 with
ppppnnnnmmmmddddeeeepppptttthhhh to reduce the number of colours in the picture to
256 or fewer.
OOOOPPPPTTTTIIIIOOOONNNNSSSS
----cccclllloooouuuuddddssss Generate clouds. A pixmap of fractal clouds is
generated. Selecting clouds sets the default for
fractal dimension to 2.15 and power scale factor
to 0.75.
----ddddiiiimmmmeeeennnnssssiiiioooonnnn _d_i_m_e_n
Sets the fractal dimension to the specified _d_i_m_e_n,
which may be any floating point value between 0
and 3. Higher fractal dimensions create more
``chaotic'' images, which require higher resolu-
tion output and a larger FFT mesh size to look
good. If no dimension is specified, 2.4 is used
when generating planets and 2.15 for clouds.
----ggggllllaaaacccciiiieeeerrrrssss _l_e_v_e_l
The floating point _l_e_v_e_l setting controls the ex-
tent to which terrain elevation causes ice to ap-
pear at lower latitudes. The default value of
0.75 makes the polar caps extend toward the equa-
tor across high terrain and forms glaciers in the
highest mountains, as on Earth. Higher values
make ice sheets that cover more and more of the
land surface, simulating planets in the midst of
an ice age. Lower values tend to be boring,
resulting in unrealistic geometrically-precise ice
cap boundaries.
----hhhhoooouuuurrrr _h_o_u_r
When generating a planet, _h_o_u_r is used as the
``hour angle at the central meridian.'' If you
specify ----hhhhoooouuuurrrr 11112222, for example, the planet will be
fully illuminated, corresponding to high noon at
the longitude at the centre of the screen. You
can specify any floating point value between 0 and
24 for _h_o_u_r, but values which place most of the
planet in darkness (0 to 4 and 20 to 24) result in
crescents which, while pretty, don't give you many
illuminated pixels for the amount of computing
that's required. If no ----hhhhoooouuuurrrr option is specified,
a random hour angle is chosen, biased so that only
Page 3 (printed 9/7/93)
ppppppppmmmmffffoooorrrrggggeeee((((1111)))) XXXXEEEENNNNIIIIXXXX SSSSyyyysssstttteeeemmmm VVVV ((((22225555 OOOOccccttttoooobbbbeeeerrrr 1111999999991111)))) ppppppppmmmmffffoooorrrrggggeeee((((1111))))
25% of the images generated will be crescents.
----iiiicccceeee _l_e_v_e_l
Sets the extent of the polar ice caps to the given
floating point _l_e_v_e_l. The default level of 0.4
produces ice caps similar to those of the Earth.
Smaller values reduce the amount of ice, while
larger ----iiiicccceeee settings create more prominent ice
caps. Sufficiently large values, such as 100 or
more, in conjunction with small settings for ----
ggggllllaaaacccciiiieeeerrrrssss (try 0.1) create ``ice balls'' like Euro-
pa.
----iiiinnnncccclllliiiinnnnaaaattttiiiioooonnnn||||----ttttiiiilllltttt _a_n_g_l_e
The inclination angle of the planet with regard to
its primary star is set to _a_n_g_l_e, which can be any
floating point value from -90 to 90. The inclina-
tion angle can be thought of as specifying, in de-
grees, the ``season'' the planet is presently ex-
periencing or, more precisely, the latitude at
which the star transits the zenith at local noon.
If 0, the planet is at equinox; the star is
directly overhead at the equator. Positive values
represent summer in the northern hemisphere, nega-
tive values summer in the southern hemisphere.
The Earth's inclination angle, for example, is
about 23.5 at the June solstice, 0 at the
equinoxes in March and September, and -23.5 at the
December solstice. If no inclination angle is
specified, a random value between -21.6 and 21.6
degrees is chosen.
----mmmmeeeesssshhhh _s_i_z_e
A mesh of _s_i_z_e by _s_i_z_e will be used for the fast
Fourier transform (FFT). Note that memory re-
quirements and computation speed increase as the
square of _s_i_z_e; if you double the mesh size, the
program will use four times the memory and run
four times as long. The default mesh is 256x256,
which produces reasonably good looking pictures
while using half a megabyte for the 256x256 array
of single precision complex numbers required by
the FFT. On machines with limited memory capaci-
ty, you may have to reduce the mesh size to avoid
running out of RAM. Increasing the mesh size pro-
duces better looking pictures; the difference be-
comes particularly noticeable when generating high
resolution images with relatively high fractal di-
mensions (between 2.2 and 3).
----nnnniiiigggghhhhtttt A starry sky is generated. The stars are created
by the same algorithm used for the stars that sur-
Page 4 (printed 9/7/93)
ppppppppmmmmffffoooorrrrggggeeee((((1111)))) XXXXEEEENNNNIIIIXXXX SSSSyyyysssstttteeeemmmm VVVV ((((22225555 OOOOccccttttoooobbbbeeeerrrr 1111999999991111)))) ppppppppmmmmffffoooorrrrggggeeee((((1111))))
round planet pictures, but the output consists ex-
clusively of stars.
----ppppoooowwwweeeerrrr _f_a_c_t_o_r
Sets the ``power factor'' used to scale elevations
synthesised from the FFT to _f_a_c_t_o_r, which can be
any floating point number greater than zero. If
no factor is specified a default of 1.2 is used if
a planet is being generated, or 0.75 if clouds are
selected by the ----cccclllloooouuuuddddssss option. The result of the
FFT image synthesis is an array of elevation
values between 0 and 1. A non-unity power factor
exponentiates each of these elevations to the
specified power. For example, a power factor of 2
squares each value, while a power factor of 0.5
replaces each with its square root. (Note that
exponentiating values between 0 and 1 yields
values that remain within that range.) Power fac-
tors less than 1 emphasise large-scale elevation
changes at the expense of small variations. Power
factors greater than 1 increase the roughness of
the terrain and, like high fractal dimensions, may
require a larger FFT mesh size and/or higher
screen resolution to look good.
----ssssaaaattttuuuurrrraaaattttiiiioooonnnn _s_a_t
Controls the degree of colour saturation of the
stars that surround planet pictures and fill star-
ry skies created with the ----nnnniiiigggghhhhtttt option. The de-
fault value of 125 creates stars which resemble
the sky as seen by the human eye from Earth's sur-
face. Stars are dim; only the brightest activate
the cones in the human retina, causing colour to
be perceived. Higher values of _s_a_t approximate
the appearance of stars from Earth orbit, where
better dark adaptation, absence of skyglow, and
the concentration of light from a given star onto
a smaller area of the retina thanks to the lack of
atmospheric turbulence enhances the perception of
colour. Values greater than 250 create ``science
fiction'' skies that, while pretty, don't occur in
this universe.
Thanks to the inverse square law combined with
Nature's love of mediocrity, there are many, many
dim stars for every bright one. This population
relationship is accurately reflected in the skies
created by ppppppppmmmmffffoooorrrrggggeeee. Dim, low mass stars live
much longer than bright massive stars, consequent-
ly there are many reddish stars for every blue gi-
ant. This relationship is preserved by ppppppppmmmmffffoooorrrrggggeeee.
You can reverse the proportion, simulating the sky
Page 5 (printed 9/7/93)
ppppppppmmmmffffoooorrrrggggeeee((((1111)))) XXXXEEEENNNNIIIIXXXX SSSSyyyysssstttteeeemmmm VVVV ((((22225555 OOOOccccttttoooobbbbeeeerrrr 1111999999991111)))) ppppppppmmmmffffoooorrrrggggeeee((((1111))))
as seen in a starburst galaxy, by specifying a
negative _s_a_t value.
----sssseeeeeeeedddd _n_u_m Sets the seed for the random number generator to
the integer _n_u_m. The seed used to create each
picture is displayed on standard output (unless
suppressed with the ----qqqquuuuiiiieeeetttt option). Pictures gen-
erated with the same seed will be identical. If
no ----sssseeeeeeeedddd is specified, a random seed derived from
the date and time will be chosen. Specifying an
explicit seed allows you to re-render a picture
you particularly like at a higher resolution or
with different viewing parameters.
----ssssttttaaaarrrrssss _f_r_a_c_t_i_o_n
Specifies the percentage of pixels, in tenths of a
percent, which will appear as stars, either sur-
rounding a planet or filling the entire frame if
----nnnniiiigggghhhhtttt is specified. The default _f_r_a_c_t_i_o_n is 100.
----xxxxssssiiiizzzzeeee||||----wwwwiiiiddddtttthhhh _w_i_d_t_h
Sets the width of the generated image to _w_i_d_t_h
pixels. The default width is 256 pixels. Images
must be at least as wide as they are high; if a
width less than the height is specified, it will
be increased to equal the height. If you must
have a long skinny pixmap, make a square one with
ppppppppmmmmffffoooorrrrggggeeee, then use ppppnnnnmmmmccccuuuutttt to extract a portion of
the shape and size you require.
----yyyyssssiiiizzzzeeee||||----hhhheeeeiiiigggghhhhtttt _h_e_i_g_h_t
Sets the height of the generated image to _h_e_i_g_h_t
pixels. The default height is 256 pixels. If the
height specified exceeds the width, the width will
be increased to equal the height.
All flags can be abbreviated to their shortest unique pre-
fix.
BBBBUUUUGGGGSSSS
The algorithms require the output pixmap to be at least as
wide as it is high, and the width to be an even number of
pixels. These constraints are enforced by increasing the
size of the requested pixmap if necessary.
You may have to reduce the FFT mesh size on machines with 16
bit integers and segmented pointer architectures.
SSSSEEEEEEEE AAAALLLLSSSSOOOO
ppppnnnnmmmmccccuuuutttt(1), ppppnnnnmmmmddddeeeepppptttthhhh(1), ppppppppmmmmddddiiiitttthhhheeeerrrr(1), ppppppppmmmmqqqquuuuaaaannnntttt(1), ppppppppmmmm(5)
[1] Voss, Richard F., ``Random Fractal Forgeries,'' in
Page 6 (printed 9/7/93)
ppppppppmmmmffffoooorrrrggggeeee((((1111)))) XXXXEEEENNNNIIIIXXXX SSSSyyyysssstttteeeemmmm VVVV ((((22225555 OOOOccccttttoooobbbbeeeerrrr 1111999999991111)))) ppppppppmmmmffffoooorrrrggggeeee((((1111))))
Earnshaw et. al., Fundamental Algorithms for Computer
Graphics, Berlin: Springer-Verlag, 1985.
[2] Peitgen, H.-O., and Saupe, D. eds., The Science Of
Fractal Images, New York: Springer Verlag, 1988.
AAAAUUUUTTTTHHHHOOOORRRR
John Walker
Autodesk SA
Avenue des Champs-Montants 14b
CH-2074 MARIN
Suisse/Schweiz/Svizzera/Svizra/Switzerland
Usenet: kelvin@Autodesk.com
Fax: 038/33 88 15
Voice: 038/33 76 33
Permission to use, copy, modify, and distribute this
software and its documentation for any purpose and without
fee is hereby granted, without any conditions or restric-
tions. This software is provided ``as is'' without express
or implied warranty.
PPPPLLLLUUUUGGGGWWWWAAAARRRREEEE!!!! If you like this kind of stuff, you may also enjoy
``James Gleick's Chaos--The Software'' for MS-DOS, available
for $59.95 from your local software store or directly from
Autodesk, Inc., Attn: Science Series, 2320 Marinship Way,
Sausalito, CA 94965, USA. Telephone: (800) 688-2344 toll-
free or, outside the U.S. (415) 332-2344 Ext 4886. Fax:
(415) 289-4718. ``Chaos--The Software'' includes a more
comprehensive fractal forgery generator which creates
three-dimensional landscapes as well as clouds and planets,
plus five more modules which explore other aspects of Chaos.
The user guide of more than 200 pages includes an introduc-
tion by James Gleick and detailed explanations by Rudy Ruck-
er of the mathematics and algorithms used by each program.
Page 7 (printed 9/7/93)